Welcome to pandas!

5.8 实例

1、根据出生日期计算年龄

import pandas as pd,datetime as dti

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.根据出生算年龄.xlsx" )

print (df)

s=df.出生日期.dt.year

today=dti.datetime.now().year

df[ "年龄" ]=today-s

print (df)

返回:

姓名 出生日期
0 张三 1990-05-04
1 李四 1989-06-19
2 王麻子 1976-08-04
3 小曾 1966-10-12

姓名 出生日期 年龄
0 张三 1990-05-04 34
1 李四 1989-06-19 35
2 王麻子 1976-08-04 48
3 小曾 1966-10-12 58

2、将不规则日期转为标准日期

import pandas as pd,datetime as dti

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.将不规则日期转为标准日期.xlsx" )

print (df) # 如果数据本来就是时间格式,则在用正则表达式的时候可能会提示出错。

df[ "采购日期1" ]=pd.to_datetime(df.采购日期.str.findall( "\d+" ).str.join( "-" )) # 如果join前面不加str也会报错

df[ "采购日期2" ]=pd.DatetimeIndex(df.采购日期.str.findall( "\d+" ).str.join( "-" ))

df[ "年龄" ]=(dti.datetime.now()-df[ "采购日期2" ]).dt.days

print (df)

返回:

产品 采购日期
0 A 2019/12/13
1 B 2018*10*14
2 C 2015.02.15
3 D 2017-12-16
4 E 2021#3#14

产品 采购日期 采购日期1 采购日期2 年龄
0 A 2019/12/13 2019-12-13 2019-12-13 1543
1 B 2018*10*14 2018-10-14 2018-10-14 1968
2 C 2015.02.15 2015-02-15 2015-02-15 3305
3 D 2017-12-16 2017-12-16 2017-12-16 2270
4 E 2021#3#14 2021-03-14 2021-03-14 1086

3、根据时间来计算金额

计算开始时间与结束时间之间的长度,然后按每分种10元的课酬计算每门课程的金额


import pandas as pd,datetime as dti

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\素材测试.根据课时计算课酬.xlsx" )

print (df)

t1=pd.to_datetime(df.开始时间) #原数据是文本格式,需要转成时间戳格式

t2=pd.to_datetime(df.结束时间)

df[ "课长1" ]=pd.TimedeltaIndex(t1-t2).seconds/60

# df[ "课长2" ]=pd.TimedeltaIndex(t1-t2).map(lambda l:l.seconds)/60 等同上一行

df[ "金额" ]=(t1-t2).dt.seconds/60*10

print (df)

返回:

课程名称 开始时间 结束时间
0 Pandas基础 2021-05-05 14:00:00 2021-05-05 15:30:00
1 python入门 2021-05-06 08:30:00 2021-05-05 10:30:00
2 Excel VBA 2021-05-07 11:00:00 2021-05-05 12:30:00
3 精学Numpy 2021-05-08 14:30:00 2021-05-05 16:30:00

课程名称 开始时间 结束时间 课长1 金额
0 Pandas基础 2021-05-05 14:00:00 2021-05-05 15:30:00 1350.0 13500.0
1 python入门 2021-05-06 08:30:00 2021-05-05 10:30:00 1320.0 13200.0
2 Excel VBA 2021-05-07 11:00:00 2021-05-05 12:30:00 1350.0 13500.0
3 精学Numpy 2021-05-08 14:30:00 2021-05-05 16:30:00 1320.0 13200.0

3、借阅天数计算到期时间

import pandas as pd

df=pd.read_excel( "D:\Pyobject2023\object\测试\素材\素材测试.借阅天数计算到期时间.xlsx" )

print (df)

df[ "开始时间" ]=pd.to_datetime(df.开始时间) #原数据格式为文本,需转成时间戳格式

df[ "借阅天数" ]=pd.TimedeltaIndex(df.借阅天数, unit = "D" ) #原数据格式为文本,需转成时间差格式

df[ "到期时间" ]=df.开始时间+df.借阅天数

print (df)

返回:

书名 开始时间 借阅天数
0 神雕侠侣 2000-5-1 08:30:25 45
1 天龙八部 2001-10-1 09:30:46 66
2 鹿鼎记 2001-12-1 10:25:23 75

书名 开始时间 借阅天数 到期时间
0 神雕侠侣 2000-05-01 08:30:25 45 days 2000-06-15 08:30:25
1 天龙八部 2001-10-01 09:30:46 66 days 2001-12-06 09:30:46
2 鹿鼎记 2001-12-01 10:25:23 75 days 2002-02-14 10:25:23